package com.cl.blog.scheduled;

import com.cl.blog.mapper.BContentMapper;
import com.cl.blog.util.RedisUtil;
import com.cl.blog.vo.YearPo;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * @Author 付
 * @Date 2024-05-15 18:37
 * @Version 1.0
 * @description 定时任务处理器
 * @since 1.0
 */
@Component
@Slf4j
public class ScheduledTasks {

	@Autowired
	BContentMapper bContentMapper;
	@Autowired
	RedisUtil redisUtil;

	/**
	 * 统计计时器
	 * 每个月统计一次
	 * cron = "0 0 1 * * ?"
	 * 	秒 时 分 日 月 星期，这里的？ 可以代表 月和星期，表示不确定。
	 * 	当日期指定时，星期只能为？，因为这是互斥关系
	 */
	@Scheduled(cron = "0 0 1 * * ?" )
	public void statistics() throws JsonProcessingException {
		log.info("统计的定时任务执行了=================");
		List<YearPo> yearByCount = bContentMapper.getYearByCount();
		String yearStatistics = redisUtil.get("year_statistics");
		ObjectMapper objectMapper = new ObjectMapper();
		String new_year_statistics = objectMapper.writeValueAsString(yearByCount);

		redisUtil.set("year_statistics",
				new_year_statistics);
	}

}
